﻿#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

//使用for循环打印一维数组
//int main()
//{
//	int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", a[i]);
//		printf("%p\n", &a[i]);
//	}
//	return 0;
//}

//先输入再逆向输出一组数组
//int main()
//{
//	int a[10];
//	for (int i = 0; i < 10; i++)
//	{
//		scanf("%d", &a[i]);
//	}
//	for (int j = 9;j >= 0;j--)
//	{
//		printf("%d ", a[j]);
//	}
//	return 0;
//}


////使用sizeof求数组长度
//int main()
//{
//	int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int length;
//  //sizeof(a)=40Byte，sizeof(a[0])=4Byte
//	length = sizeof(a) / sizeof(a[0]);//数组内有10个元素
//	printf("%d", length);
//	return 0;
//}

//二维数组
int main()
{
	////完全初始化
	//int a[2][3] = {1,3,5,2,4,6};
	
	////不完全初始化
	//int a[2][3] = { 1,2};
	
	//// 按行初始化
	//int a[2][3] = { {1,3,5},{2,4,6} };
	
	// 初始化省略行（但不能省略列）
	int a[][3] = { 1,2,3,4 };
	
	//打印二维数组
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}


////二维数组的输入和输出
//int main()
//{
//	int a[2][3];
//	for (int i = 0; i < 2; i++)
//	{
//		for (int j = 0; j < 3; j++)
//		{
//			scanf("%d", &a[i][j]);
//		}
//	}
//	for (int i = 0; i < 2; i++)
//	{
//		for (int j = 0; j < 3; j++)
//		{
//			printf("%d	", a[i][j]);
//			//打印出数组所有元素的地址
//			printf("&[%d][%d] = %p\n", i, j, &a[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}


////多个字符从两端移动，向中间汇聚
//int main()
//{
//	char arr1[] = "welcome to beijing";
//	char arr2[] = "##################";
//	int left = 0;
//	int right = strlen(arr2) - 1;//字符串数组的长度
//	while (left<=right)
//	{
//		Sleep(500);
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		left++;
//		right--;
//		printf("%s\n", arr2);
//	}
//	return 0;
//}

////⼀个升序的数组中，使用二分查找某数字
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	//要找的数字
//	int number = 4;
//	//左下标
//	int left = 0;
//	//右下标
//	int right = (sizeof(arr) / sizeof(arr[0])) - 1;
//	//中间下标
//	int mid = 0;
//	int find = 0;
//	while (left<=right)
//	{
//		mid = (left + right) / 2;
//		if (arr[mid] < number)
//		{
//			left = mid + 1;
//		}
//		else if (arr[mid] > number)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			find = 1;
//			break;
//		}
//	}
//	if (find == 1)
//		printf("找到了，number的下标是%d", mid);
//	else
//		printf("没有找到\n");
//	return 0;
//}

